<?php

defined('WEKIT_VERSION') || exit('Forbidden');

/**
 * 订单服务
 *
 * @author Jianmin Chen <sky_hold@163.com>
 * @copyright ©2003-2103 phpwind.com
 * @license http://www.phpwind.com
 *
 * @version $Id: PwOrder.php 7491 2012-04-06 10:14:44Z jieyin $
 */
class PwOrder
{
    /**
     * 获取一个订单.
     *
     * @param int $id 订单id
     *                return array
     */
    public function getOrder($id)
    {
        if (empty($id)) {
            return array();
        }

        return $this->_getDao()->getOrder($id);
    }

    /**
     * 获取一个订单.
     *
     * @param string $orderno 订单号
     *                        return array
     */
    public function getOrderByOrderNo($orderno)
    {
        if (empty($orderno)) {
            return array();
        }

        return $this->_getDao()->getOrderByOrderNo($orderno);
    }

    public function countByUidAndType($uid, $type)
    {
        if (empty($uid)) {
            return 0;
        }

        return $this->_getDao()->countByUidAndType($uid, $type);
    }

    /**
     * 获取用户某一类型的订单.
     *
     * @param int $uid
     * @param int $type
     * @param int $limit
     * @param int $offset
     *
     * @return array
     */
    public function getOrderByUidAndType($uid, $type, $limit = 20, $offset = 0)
    {
        if (empty($uid)) {
            return array();
        }

        return $this->_getDao()->getOrderByUidAndType($uid, $type, $limit, $offset);
    }

    /**
     * 增加一个订单.
     *
     * @param object $dm 订单数据模型
     *                   return mixed
     */
    public function addOrder(PwOrderDm $dm)
    {
        if (($result = $dm->beforeAdd()) !== true) {
            return $result;
        }

        return $this->_getDao()->addOrder($dm->getData());
    }

    /**
     * 更新一个订单.
     *
     * @param object $dm 订单数据模型
     *                   return mixed
     */
    public function updateOrder(PwOrderDm $dm)
    {
        if (($result = $dm->beforeUpdate()) !== true) {
            return $result;
        }

        return $this->_getDao()->updateOrder($dm->id, $dm->getData());
    }

    protected function _getDao()
    {
        return Wekit::loadDao('pay.dao.PwOrderDao');
    }
}
